package com.example.demo.mapper;

import com.example.demo.entity.Forward;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>
 * 转发文章表 Mapper 接口
 * </p>
 *
 * @author Mr.Xiayh
 * @since 2024-06-05
 */
@Mapper
public interface ForwardMapper extends BaseMapper<Forward> {
    /**
     * 根据文章ID统计转发数量。
     * 通过查询forward表中指定文章ID的记录数量，来获取该文章被转发的次数。
     * @param articleId 文章的唯一标识ID，用于指定查询的文章。
     * @return 返回转发的次数，作为一个整数。
     */
    @Select("SELECT COUNT(*) FROM forward WHERE article_id = #{articleId}")
    int countForwardByUserAndArticle(@Param("articleId") Integer articleId);

    /**
     * 添加转发记录。
     * @param forward 转发记录对象，包含转发的详细信息。
     * @return 返回添加记录的行数，如果添加成功则返回1，否则返回0。
     */
    @Insert("INSERT INTO forward(user_id,article_id,create_time) VALUES(#{userId},#{articleId},NOW())")
    int addForward(Forward forward);

    /**
     * 通过文章id获取文章内容
     *
     */
    @Select("SELECT article FROM article WHERE article_id = #{articleId}")
    String getForwardByArticleId(@Param("articleId") Integer articleId);

    /**
     * 通过文章id获取文章作者id
     * @param articleId
     * @return
     */
    @Select("SELECT user_id FROM forward WHERE article_id = #{articleId}")
    Integer getForwardUserIdByArticleId(@Param("articleId") Integer articleId);

    @Select("select article_id from forward where user_id = #{userId}")
    List<Integer> getForwardArticleIdByUserId(@Param("userId") Integer userId);
}